package xx.services.page.inter;

import javax.ws.rs.FormParam;
import javax.ws.rs.PathParam;

/**
 * page页面导航模板管理服务接口
 * 
 * @Path (Constants.RESTFUL_ROOT_PATH + "/page/navigation/demo")
 * 
 * @author chenxiang 2010-12-21
 */
public interface INavigationDemoInterface
{
    /**
     * 新增一个导航模板。<br>
     * 注：<br>
     * <li>新增页面导航模板的key，也就是ID是负增长的</li>
     * <li>新增成功后要在page的navigation表中用新增的id做为parent_id新增一条根目录 </li>
     * 
     * @POST
     * 
     * @param navigation-@FormParam("navigation")
     *            导航的demo json数据
     * @return 新导航模板
     * @author chenxiang 2010-12-21
     */
    public String add(@FormParam("navigation")
    String navigation);

    /**
     * 修改一个导航模板。<br>
     * 
     * @PUT
     * @Path ("/navigation_id")
     * 
     * @param navigationId-@PathParam("navigation_id")
     *            模板导航ID
     * @param navigation-@FormParam("navigation")
     *            导航的demo json数据
     * @return 新导航模板
     * @author chenxiang 2010-12-21
     */
    public String update(@PathParam("navigation_id")
    long navigationId, @FormParam("navigation")
    String navigation);

    /**
     * 获取一个导航模板，包含与其关联的navigation数据
     * 
     * @GET
     * @Path ("/{navigation_id}")
     * 
     * @param navigationId-@PathParam("navigation_id")
     *            模板导航ID
     * @return 导航模板实体JSON数据
     * @author chenxiang 2010-12-21
     */
    public String get(@PathParam("navigation_id")
    long navigationId);

    /**
     * 获取一个导航模板的HTML代码，包含与其关联的navigation数据
     * 
     * @GET
     * @Path ("/{navigation_id}/html")
     * 
     * @param navigationId-@PathParam("navigation_id")
     *            模板导航ID
     * @return 导航模板HTML代码
     * @author chenxiang 2010-12-21
     */
    public String getHtml(@PathParam("navigation_id")
    long navigationId);

    /**
     * 获取导航模板列表，包含与其关联的navigation数据
     * 
     * @GET
     * @Path ("/list")
     * 
     * @return 导航模板实体JSON数据
     * @author chenxiang 2010-12-21
     */
    public String gets();
    
    /**
     * 删除导航模板，同时要删除与之关联的navigaion
     * 
     * @DELETE
     * @Path ("/navigation_id")
     * 
     * @param navigationId-@PathParam("navigation_id")
     *            模板导航ID，多个ID用“_”隔开
     * @return true-删除成功，string-其他删除失败（string就是失败原因）
     * @author chenxiang 2010-12-21
     */
    public String delete(@PathParam("navigation_id")
    String navigationId);
}
